/**
 * 验证IP
 */
export function isValidIP() {
  return /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
}

/**
 * 验证PORT
 */
export function isValidPort() {
  return /^[1-9]\d{0,3}$|^([1-5]\d{4})$|^(6[0-4]\d{3})$|^(65[0-4]\d{2})$|^(655[0-2]\d)$|^(6553[0-5])$/
}

/**
 * 验证小写字母数字中划线，且以小写字母开头
 */
export function isValidK8sKey() {
  return /^[a-z][a-z0-9-.]*$/
}

export function validateVersion() {
  return /^(v?\d+)(\.(\d+))?\.(\d+)$/
}

/**
 * 验证只能输入字母、数字和特殊符号
 */
export function validatePassword() {
  // eslint-disable-next-line no-useless-escape
  return /^[a-zA-Z0-9\-_@#%^&+=,.?!:;~*'"(){}\[\]\\|<>]+$/
}

/**
 * 验证不能包含中文和空格
 */
export function containsChineseOrSpace() {
  return /[\u4e00-\u9fa5\s]/
}

/**
 * 验证只允许输入英文数字、小数点、下划线和短横线
 */
export function validateName() {
  return /^[a-zA-Z0-9._-]+$/
}

/**
 * 验证只允许输入小写英文字母、数字，且以小写英文字母开头
 */
export function validateProjectName() {
  return /^[a-z][a-z0-9]*$/
}

/**
 * 验证只允许输入小写字母、数字、小数点、中横线, 且只能以小写字母开头结尾
 */
export function validDeployName() {
  return /^[a-z]([a-z0-9.-]*[a-z0-9])*$/
}

/**
 * 验证只允许字母、数字、破折号（-）和点（.）, 且只能以字母开头，只允许字母或数字结尾，不能有连续的破折号或点
 */
export function validHelmName() {
  return /^[a-zA-Z](?!.*--)(?!.*\.\.)[a-zA-Z0-9-]*(?:(?:[-.][a-zA-Z0-9]+)*[a-zA-Z0-9])?$/
}

/**
 * 验证只允许输入小写英文字母、数字及中横线，且以小写英文字母或数字开头结尾
 */
export function validateNameplaceName() {
  return /^[a-z0-9]+([-][a-z0-9]+)*$/
}

/**
 * 验证只允许输入小写英文、数字和短横线
 */
export function validateDeployeeName() {
  return /^[a-z0-9-]+$/
}

/**
 * 验证字母数字下划线，且以字母开头
 */
export function isValidEnv() {
  return /^[a-zA-Z][a-zA-Z0-9_]*$/
}

/**
 * 验证只允许输入大小写字母、数字，且不能以数字开头
 */
export function validateAccountNumber() {
  return /^[a-zA-Z][a-zA-Z0-9]*$/
}

/**
 * 验证只允许输入中文、中点（·）、大小写字母、数字，且不能以中点、数字开头
 */
export function validateUserOrRole() {
  return /^(?![·\d])[\u4e00-\u9fa5A-Za-z0-9·]+$/
}

/**
 * 验证只允许输入11位纯数字（电话号码）
 */
export function validatePhoneNumber() {
  return /^1(3|4|5|6|7|8|9)\d{9}$/
}
